/*
*
==============================================================================
*  Name        : 
*  Part of     : Omen Game Engine
*  Description : 
*  Version     : 1.0
*
*  Copyright (c) 2013 Lauri Kortevaara.
* 
==============================================================================
*/

#pragma once

#include "OmenConfig.h"
#include "IOmenEvent.h"
#include "OmenDataTypes.h"
#include "IOmenObject.h"

namespace Omen {

    class CollisionEvent : public Omen::Event
    {
    public:
        OMEN_API CollisionEvent( Omen::IObject* pCollider, Omen::IObject* pTarget, const Omen::Plane& plane, const Omen::Vector3d point ) : 
          m_pCollider(pCollider), m_pTargetObject(pTarget), m_collisionPlane(plane), m_collisionPoint(point) {};
        OMEN_API virtual ~CollisionEvent() {};

        OMEN_API Omen::IObject* collider() const { return m_pCollider; }
        OMEN_API Omen::IObject* target() const { return m_pTargetObject; }
        OMEN_API const Omen::Plane& collisionPlane() const { return m_collisionPlane; }
        OMEN_API const Omen::Vector3d collisionPoint() const { return m_collisionPoint; }
    
    private:
        #pragma warning(disable:4251) // Disable warning about private member variable needs to have dll-interface to be used by clients of class 'this'
        Omen::IObject*  m_pCollider;
        Omen::IObject*  m_pTargetObject;
        Omen::Plane     m_collisionPlane;
        Omen::Vector3d  m_collisionPoint;
        #pragma warning(default:4251)
    };
} // Omen

/// EOF
